Actor model
1973年、カール・ヒューイット、Peter Bishop、Richard Steiger が発表した並行計算の数学的モデルの一種。アクターモデルでは、並行デジタル計算の汎用的基本要素として「アクター」という概念を導入している。アクターモデルは並行性の理論的理解のフレームワークとして使われるほか、並行システムの実装の理論的基礎としても利用されてきた。
https://ja.wikipedia.org/wiki/アクターモデル
アクターモデルはプログラミングパラダイムともいわれる
並行処理、分散処理を導入し、イミュータブルで高い弾力性や耐障害性を実現する
状態管理とメッセージ設計がポイント
SQS, Kinesis, Kafkaといったメッセージングシステムを作るイメージ
メッセージがあり、誰が受け取り、受け取った時にどうするか
所在地さえわかれば誰でもメッセージを送ることができる、どこからでもよい
メッセージはイミュータブル
メッセージを変更できないイベントとして状態とともに永続化できる
イベントソーシングを実現できる
Actor
アクターそれぞれに固有の識別可能なID(アドレス)が割り当てられる
アドレス宛にメッセージの送受信(非同期)でやり取りを行い、すべて並行で処理される
指定したアドレスのアクターが存在しない場合は、自動的にアクターが起動する
受け取ったメッセージはアクターのmailboxに格納されFIFOで処理される
実例
Erlang OTP
Scala/JavaのAkka/Pekko
Actor model in Go
参考
Goで実践 アクターモデル はじめに